In packet based wired and wireless communication systems packets can be lost during packet transmission. Therefore, systems and methods for determining when a packet has been lost and/or to correct packet transmission errors have been developed. For example, in cable modem data communications there is a forward error correction protocol. In the well-known TCP/IP protocol an acknowledgement protocol has been employed whereby a receiver sends an acknowledgement for a received packet. If the sender does not receive the acknowledgement for a pre-determined period of time, the sender will retransmit the packet up to a pre-determined number of times before considering transmission of such a packet hopeless. Traditionally, acknowledgement protocols employ a sender side timer and timeout per logical flow of packets. Such per logical flow allocation of resources at the sender is inefficient, leading to overly lengthy timeout periods and over allocation of timer resources.
Conventionally, each logical flow in a packet based communication system could have its own ACK stream. Thus, there could be, for example, one ACK per packet transmitted or one ACK for each logical flow. Thus, there could be one software timer and data structure(s) associated with each logical flow, which becomes highly inefficient. Furthermore, the ACKs that were transmitted back from a receiver to a sender may have been sent in a periodic burst packet, for example, and may not have consumed a significant portion of such a packet. For example, an ACK could consume twelve bytes while a burst was three hundred and eighty bytes. Thus, bandwidth is wasted as packets containing ACKs include a large percentage of unused characters when transmitted in a burst.